package com.turing.post.salesmanage.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;
import com.turing.post.util.PCPSWebInput;

/**
 * 个人客户业务接口
 * 
 * @author zxp
 * @Dec 22, 2012
 */
@Remote
@Local
public interface PersonalCustomDao {

	/**
	 * 根据主键查询个人客户信息
	 * 
	 * @param personalId
	 *            个人客户编号
	 * @return 个人客户
	 */
	public PersonalCustom getPersonalCustomByPersonalId(BigInteger personalId);

	// /**
	// * 根据姓名查询个人客户信息，如果证件号重复，记录多条
	// *
	// * @param name
	// * 姓名
	// * @return 个人客户
	// */
	// public PersonalCustom getPersonalCustomByName(PCPSWebInput
	// webInput,String name)
	// throws PCPSApplicationException;

	/**
	 * 根据证件号查询个人客户信息，如果证件号重复，记录多条
	 * 
	 * @param idNo
	 *            证件编号
	 * @return 个人客户
	 */
	public PersonalCustom getPersonalCustomByIdNo(String idNo)
			throws PCPSApplicationException;

	/**
	 * 根据姓名和证件号模糊查询当前登录操作员所在发卡商内个人客户信息
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @param page
	 *            页码
	 * @param name
	 *            姓名
	 * @param idNo
	 *            证件号
	 * @return 个人客户信息
	 */
	public List<PersonalCustom> getPersonalCustomListByNameOrIdNo(
			PCPSWebInput webInput, Integer page, String name, String idNo,
			String linkTel);

	/**
	 * 根据姓名和证件号模糊查询当前登录操作员所在发卡商内个人客户信息记录数
	 * 
	 * @param webInput
	 *            日志记录对象
	 * @param name
	 *            姓名
	 * @param idNo
	 *            证件号
	 * @return 记录数
	 */
	public BigInteger getPersonalCustomTotalByNameOrIdNo(PCPSWebInput webInput,
			String name, String idNo, String linkTel);

	/**
	 * 新增
	 * 
	 * @param personalCustom
	 * @throws PCPSApplicationException
	 */
	public void insertPersonalCustom(PersonalCustom personalCustom)
			throws PCPSApplicationException;

	/**
	 * 修改
	 * 
	 * @param personalCustom
	 * @throws PCPSApplicationException
	 */
	public void updatePersonalCustom(PersonalCustom personalCustom)
			throws PCPSApplicationException;

	/**
	 * 根据证件类型证件号查询个人信息
	 * 
	 * @param idTypeId
	 * @param idCard
	 * @return
	 */
	public PersonalCustom getPersonalCustomByIdTypeAndIdNo(BigInteger idTypeId,
			String idCard) throws PCPSApplicationException;

	public void insertPersonalCustomNoId(PersonalCustom personalCustom)
			throws PCPSApplicationException;
	/**
	 * 客户风险等级统计表----报表
	 * 
	 * @param 
	 *              创建起始时间
	 * @param enddatetime
	 *              创建终止时间
	 * @param riskLevel
	 *              风险等级             
	 * @return
	 */
	public List<Object[]> getPersonalCustomByRiskLevel(PCPSWebInput webInput,Date startdatetime,Date enddatetime,
			String riskLevel) throws PCPSApplicationException;
	
	/**
	 * 根据唯一索引获取个人客户信息
	 * @param issueCompanyNO
	 * @param idTypeID
	 * @param idNO
	 * @return
	 */
	public PersonalCustom getPersonalCustomByUNI(String issueCompanyNO, BigInteger idTypeID, String idNO);
	
	/**
	 * 根据发卡商号和身份证号查询
	 * @param issueCompanyNO
	 * @param idNO
	 * @return
	 */
	public PersonalCustom getPersonalCustomByIdNOAndIssueCompanyNO(String issueCompanyNO, String idNO);
}
